package lambda;

import java.io.File;
import java.io.FileFilter;
import java.nio.file.Files;

/*箭头函数  lambda表达式
* JDK8之后推出的lambda表达式
* lambda表达式可以"面向函数式编程"
* lambda表达式给我们的直观感受是可以用更简洁的语法创建匿名内部类
* 当要实现的接口中[只有一个抽象方法]时,才可以使用lambda表达式去替换原始的匿名内部类形式创建
*
* 基本语法:(参数列表)->{
*       方法体
* }*/
public class LambdaDemo {
    public static void main(String[] args) {
        File dir = new File("./src/file");
        //该过滤器的过滤条件是名字含有"t"的则接受
        FileFilter filter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().contains("t");
            }
        };
        dir.listFiles(f -> f.getName().contains("t"));
        //lambda:  java编译器认可(会改成内部类)
        FileFilter filter1 = (File file) -> {
          return file.getName().contains("t");
        };
        //(多个)参数类型可以忽略不写
        FileFilter filter2 = (file) ->{//f
            return file.getName().contains("t");
        };
        //如果方法体只有一句代码时,方法体的{}可以忽略
        // 如果这句代码还有return关键字,那么在忽略{}的同时,也要一同忽略return
        FileFilter filter3 = (f) -> f.getName().contains("t");
        //如果参数列表中只有一个参数,()可以忽略
        FileFilter filter4 = f -> f.getName().contains("t");

        Aoo a = ()->{
            System.out.println(11);
        };
    }
}
interface Aoo{
    public abstract void fn();
}
